# coding: utf-8

'''
-----------------------------
Exemplos de metaprogramação
-----------------------------

    >>> j = Aluno('Juca', 7)
    >>> j
    Juca (7)
    >>> j.__dict__

'''


class Aluno(object):
    nome = ''
    idade = 0
    
    def __init__(self, nome=None, idade=None):
        self.nome = nome or self.nome
        self.idade = idade or self.idade
        
    def nome_idade(self):
        return '%s (%s)' % (self.nome, self.idade)
        
    def __getattr__(self, atrib):
        if atrib == 'apelido':
            print 'favor nao usar apelidos'
        else:
            raise AttributeError()
        
    __repr__ = nome_idade  
    
if __name__=='__main__':
    import doctest
    print doctest.testmod()
        
